package com.eu.ebpm.engine.service;

import java.util.Map;

import com.eu.ebpm.engine.query.TaskQuery;

/**
 * 运行时任务服务：
 * 	1、此服务是运行时服务
 * @author 王晓华
 */
public interface TaskService {
	
	/**
	 * 签收任务
	 * @param taskId 任务ID
	 * @param assignee 签收者
	 */
	public void sign(long taskId, String assignee);
	
	/**
	 * 放弃任务列表，将任务退回签收池
	 * @param task 任务
	 */
	public void unSign(Task task);
	
	/**
	 * 完成任务，工作流引擎会自动往下一节点执行
	 * @param taskId 任务ID
	 */
	public void complete(long taskId);
	public void complete(long taskId, String remark);
	public void complete(long taskId, Map<String, Object> variables);
	public void complete(long taskId, Map<String, Object> variables, String remark);
	
	/**
	 * 设置分支参数
	 * @param taskId
	 * @param variables
	 */
	public void setForkVariable(long taskId, Map<String, Object> variables);
	
	/**
	 * 设置父流程分支参数
	 * @param taskId
	 * @param variables
	 */
	public void setParentForkVariable(long taskId, Map<String, Object> variables);
	
	/**
	 * 创建任务查询
	 */
	public TaskQuery createQuery();
	
}
